package office.PrintLinkedList;

import java.util.ArrayList;


//输入一个链表的头节点，按链表从尾到头的顺序返回每个节点的值（用数组返回）。
public class text {
    public class ListNode {
        int val;

        ListNode next = null;

        ListNode(int val) {
            this.val = val;
        }
    }

    public static void main(String[] args) {
        //printListFromTailToHead1();
        //printListFromTailToHead2();
    }
    //一、非递归
    public ArrayList<Integer> printListFromTailToHead1(ListNode listNode) {
            ArrayList<Integer> arrayList = new ArrayList<>();
            while (listNode != null) {
                arrayList.add(0,listNode.val);//ArrayList 中有个方法是 add(index,value)，可以指定 index 位置插入 value 值
                listNode = listNode.next;
            }
            return arrayList;
    }


    //二、递归
    ArrayList<Integer> arrayList = new ArrayList<>();
    public ArrayList<Integer> printListFromTailToHead2(ListNode listNode) {
        if (listNode != null) {
            printListFromTailToHead2(listNode.next);
            arrayList.add(listNode.val);
        }
        return arrayList;
    }

}
